package com.bdqn.bus.controller;


import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bdqn.bus.entity.Rent;
import com.bdqn.bus.service.RentService;
import com.bdqn.bus.vo.RentVo;
import com.bdqn.common.utitls.DateGindViewResult;
import com.bdqn.common.utitls.JSONResult;
import com.bdqn.common.utitls.SystemConstants;
import com.bdqn.common.utitls.UUIDUtil;
import com.bdqn.sys.entity.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author KazuGin
 * @since 2020-05-14
 */
@RestController
@RequestMapping("/bus/rent")
public class RentController {

    @Resource
    private RentService rentService;

    /**
     * 出租车辆
     * @param rent
     * @param httpSession
     * @return
     */
    @RequestMapping("/addRent")
    public JSONResult addRent(Rent rent, HttpSession httpSession){
        User user= (User) httpSession.getAttribute(SystemConstants.LOGIN_USER);
        //操作人
        rent.setOpername(user.getName());

        //调用保存方法
        if (rentService.save(rent)){

            return SystemConstants.Add_SUCCESS;
        }
        return SystemConstants.Add_ERROR;
    }

    /**
     * 查询页面分页
     * @param rentVo
     * @return
     */
    @RequestMapping("/list")
    public DateGindViewResult list(RentVo rentVo){
        //创建分页信息
        IPage<Rent> page = new Page<Rent>(rentVo.getPage(),rentVo.getLimit());
        //条件构造器
        QueryWrapper<Rent> queryWrapper = new QueryWrapper<Rent>();
        queryWrapper.like(StringUtils.isNotBlank(rentVo.getRentid()),"rentid",rentVo.getRentid());//出租单号
        queryWrapper.like(StringUtils.isNotBlank(rentVo.getCarnumber()),"carnumber",rentVo.getCarnumber());//车牌号
        queryWrapper.like(StringUtils.isNotBlank(rentVo.getIdentity()),"identity",rentVo.getIdentity());//身份证号码
        queryWrapper.eq(rentVo.getRentflag()!=null,"rentflag",rentVo.getRentflag());//是否归还
        queryWrapper.ge(rentVo.getStartTime()!=null,"begindate",rentVo.getStartTime());//起租时间
        queryWrapper.le(rentVo.getEndTime()!=null,"begindate",rentVo.getEndTime());//结束时间时间
        //调用查询的方法
        rentService.page(page,queryWrapper);
        //返回数据
        return new DateGindViewResult(page.getTotal(),page.getRecords());
    }


    /**
     * 更新租单车辆
     * @param rent
     * @param
     * @return
     */
    @RequestMapping("/updateRent")
    public JSONResult updateRent(Rent rent){
        //调用保存方法
        if (rentService.updateById(rent)){

            return SystemConstants.UPDATE_SUCCESS;
        }
        return SystemConstants.UPDATE_ERROR;
    }


    /**
     * 根据出租单查询该出租单的信息
     * @param rentid
     * @return
     */
    @RequestMapping("/checkRentByRentId")
    public String checkRentByRentId(String rentid){
        Map<String,Object> map=new HashMap<String, Object>();
        //创建条件构造器
        QueryWrapper<Rent> queryWrapper=new QueryWrapper<Rent>();
        queryWrapper.eq("rentid",rentid);
        //调用查询的方法
        Rent rent = rentService.getOne(queryWrapper);
        //判断对象不为空，表示存在
        if (rent!=null){
            map.put(SystemConstants.EXIST,true);//出租单存在
            map.put("rent",rent);//出租单信息
        }else {
            map.put(SystemConstants.EXIST,false);
            map.put(SystemConstants.MESSAGE,"该出租单不存在，请重新输入");
        }
        return JSON.toJSONString(map);
    }

}

